package com.cskaoyan.javase.oop1._15import.one;

import com.cskaoyan.javase.oop1._15import.two.Teacher;
/**
 * 测试类
 * 在一个类中,需要使用其它类(接口,注解等)来完成需求,是非常常见的需求
 * 这时要分两种情况:
 *      1.访问/使用同包下的class
 *          同包下是绝无可能出现两个同名类的
 *          所以在同包下时,简单类名是可以作为唯一性标识区分类的
 *          访问同包下的类时,无需做任何额外操作,直接使用简单类名就可以了
 *
 *      2.(更多见)访问/使用不同包下的class
 *          不同包下,出现多个同名类是很正常的事情
 *          所以当访问不同包下的类时,简单类名是不可以作为唯一性标识区分类的
 *          这时再使用简单类名是不可以的
 *          这时就需要明确告诉编译器,使用的不同包下的该类究竟是哪个包下的类
 *          具体来说,有两种实现方式:
 *              (最常用)a.导包
 *              语法: import 全限定类名;
 *              通过导包的语法,就告诉了编译器使用的是哪个包下的该类
 *              当使用导包语法后,再使用简单类名就可以使用该类了.
 *              导包的语句必须放在package声明之后,有效代码之前,一般来说都是紧跟package声明语句.
 *              导包在IDEA是存在自动导包功能的,注意不要导错包就可以了
 *
 *              (不常用)b.放弃使用简单类名,而是全程使用全限定类名.
 *                  全限定类名一般都很长
 *                  一般情况下,该方式不要使用,优先选择使用导包
 *                  当需要在一个类中,同时使用多个包下的同名类时,全限定类名就必须要使用了.
 *
 * @since 10:16
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Test {
    public static void main(String[] args) {
        /*Student s = new Student();
        s.test();

        Teacher t = new Teacher();*/
        /*com.cskaoyan.javase.oop1._15import.two.Student s = new com.cskaoyan.javase.oop1._15import.two.Student();
        s.test();*/

        // 需求: 同时使用one,two两个包下的Student类
        Student s = new Student();
        s.test();
        com.cskaoyan.javase.oop1._15import.two.Student s2 = new com.cskaoyan.javase.oop1._15import.two.Student();
        s2.test();

        new Teacher();
    }
}
// 'Teacher' is already defined in this compilation unit
// class Teacher{}
